package com.sxbbc.api.service;

import java.util.Map;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.function.common.RestResponse;
import com.sxbbc.common.core.dto.jz.BusinessInfoVo;
import com.sxbbc.common.core.dto.jz.NearBusinessDetailVo;
import com.sxbbc.common.core.dto.jz.NearBusinessVo;
import com.sxbbc.common.core.entity.jz.*;
import com.sxbbc.common.core.utils.BasePage;

/**
 * 店铺数据 业务处理
 * 接口服务类
 * @author xiaoky
 * @date 2019-05-27
 */
public interface IBusinessService extends IService<BBusiness> {
	/**
	 * 查询附近商家
	 * @param page 分页
	 * @param business 相关查询条件
	 * @return IPage<NearBusinessVo> 返回分页数据
	 */
	IPage<NearBusinessVo> queryNearBusiness(BasePage<BBusiness> page, BBusiness business);

	/**
	 * 查询店铺详细信息
	 * @param bid 店铺id
	 * @return BusinessDetailVo 接口封装对象
	 */
	NearBusinessDetailVo getBusinessDetail(Integer bid);

	/**
	 * 查询附近商家买单数据
	 * @param cid 用于查询用户余额
	 * @param bid
	 * @param scan 1 扫码进入  其他数据都是非扫码
	 * @return Map封装，余额，店铺名
	 */
	Map<String, Object> getBuyMsg(Integer bid, Integer cid, Integer scan);
	
	/**
	 * 处理线下买单评论
	 * @param evaluate 评论信息
	 * @return 评论结果
	 */
	RestResponse handleOfflineEvaluate(BOfflineEvaluate evaluate);

	/**
	 * 线下买单支付之后显示页面数据
	 * @param cid 用户id用于校验支付记录
	 * @param payCode 获取支付记录
	 * @return 付款信息
	 */
	Map<String, Object> getNearBuyAfter(Integer cid, String payCode);

	/**
	 * 处理线下买单
	 * @param offline 买单数据
	 * @param payWord 支付密码
	 * @param payChannel 支付渠道 PayChannelEnums
	 * @return 处理结果, 微信支付宝返回签名信息
	 */
	RestResponse handleOfflineBuy(BOffline offline, String payWord, Integer payChannel);



	/**
	 * 查询交易钱包明细
	 * @param cid 用户id
	 * @param page 分页
	 * @return 分页数据
	 * @author xiaoky
	 */
	IPage<BMoneyDetail> queryBusinessMoneyDetail(Integer cid, BasePage<BMoneyDetail> page);

	/**
	 * 交易钱包提现
	 * @param cid 用户id
	 * @param payWord 支付密码
	 * @param detail 提现参数
	 * @return
	 * @author xiaoky
	 */
	RestResponse handleBusinessCash(Integer cid, String payWord, SysCashDetails detail);
	
	/**
	 * 查询商家联系信息
	 * @param bid
	 * @return
	 * @author xiaoky
	 */
	BusinessInfoVo queryBusinessLinkMsg(Integer bid);

	/**
	 * 查询商家冻结积分明细
	 * @param cid 商家对应用户id
	 * @param page 分页数据
	 * @return IPage
	 * @author xiaoky
	 */
	IPage<BFreezeMoneyDetail> queryBusinessFreezeMoneyDetail(Integer cid, IPage<BFreezeMoneyDetail> page);

	/**
	 * 查询商家中心首页数据
	 * @param cid
	 * @return
	 */
	RestResponse selectMerchantCenterData(Integer cid);

	RestResponse editOperatingStatus(Integer cid, Integer status,String workTime);

	/**
	 *
	 * @param cid     @param cid
	 * @param dateType 1：查询日营业额，2：查询月营业额
	 * @return
	 */
	RestResponse queryTurnoverDetailsList(Integer cid, Integer dateType);

	/**
	 * 商家中心-店铺钱包明细列表
	 * @param cid
	 * @return
	 */
	RestResponse queryWalletDetailsList(Integer cid,BasePage<BMoneyDetail> page);

	/**
	 * 商家中心-商家提现页面数据
	 * @param cid
	 * @return
	 */
	RestResponse merchantCashWithdrawalPage(Integer cid);

	/**
	 * 商家中心-线下订单核销信息展示
	 * @param cid
	 * @param verifyCode
	 * @return
	 */
	RestResponse offlineOrderInfo(Integer cid, String verifyCode);

	/**
	 * 商家中心-线下订单核销
	 * @param cid
	 * @param verifyCode
	 * @return
	 */
    RestResponse orderVerify(Integer cid, String verifyCode);

	/**
	 * 商家中心-申请提现
	 * @param cash
	 * @param payWord
	 * @return
	 */
    RestResponse cashApply(SysCashDetails cash, String payWord);
}
